System, method, and article of manufacture for determining an estimated battery cell module state

ABSTRACT

A system, a method, and an article of manufacture for determining an estimated battery cell module state indicative of a state of a battery cell module of a battery pack are provided. The method includes measuring at least one of a battery cell module voltage, a battery cell module current, and a battery cell module temperature. The method further includes determining the estimated battery cell module state of the battery cell module at a predetermined time based on an estimated battery pack state and at least one of the battery cell module voltage, the battery cell module current, and the battery cell module temperature. The method further includes storing a vector corresponding to the estimated battery cell module state in a memory.

CROSS REFERENCE TO RELATED APPLICATION

This application is a divisional of pending U.S. patent application Ser. No. 12/022,277, filed Jan. 30, 2008, the contents of which are incorporated herein by reference in its entirety.

BACKGROUND OF THE INVENTION

Batteries are used in a wide variety of electronic and electrical devices. It is desirable to be able to estimate the internal state of a battery, including a state-of-charge (SOC), a resistance, or a total capacity.

To estimate the states of battery cells in a battery pack, a rather complex algorithm has been executed for each battery cell in the battery pack to determine the individual state of each battery cell, without taking into account an estimated battery pack state. As a result, a relatively large amount of computational tasks must be performed to determine the states of the individual battery cells in the battery pack.

Accordingly, the inventor herein has recognized a need for an improved method for more efficiently determining an estimated battery cell module state.

BRIEF DESCRIPTION OF THE INVENTION

A method for determining an estimated battery cell module state indicative of a state of a battery cell module of a battery pack in accordance with an exemplary embodiment is provided. The method includes measuring at least one of a battery cell module voltage, a battery cell module current, and a battery cell module temperature. The method further includes determining the estimated battery cell module state of the battery cell module at a predetermined time based on an estimated battery pack state and at least one of the battery cell module voltage, the battery cell module current, and the battery cell module temperature. The method further includes storing a vector corresponding to the estimated battery cell module state in a memory.

A system for determining an estimated battery cell module state indicative of a state of a battery cell module of a battery pack in accordance with another exemplary embodiment is provided. The system includes a voltage sensor electrically coupled to the battery cell module. The voltage sensor is configured to generate a first signal indicative of a battery cell module voltage. The system further includes a current sensor electrically coupled to the battery cell module. The current sensor is configured to generate a second signal indicative of a battery cell module current. The system further includes a temperature sensor disposed proximate the battery cell module. The temperature sensor is configured to generate a third signal indicative of battery cell module temperature. The system further includes a computer configured to receive the first, second, and third signals. The computer is further configured to determine the estimated battery cell module state at the predetermined time based on an estimated battery pack state and at least one of the first, second, and third signals. The computer is further configured to store a vector corresponding to the estimated battery cell module state in a memory.

A computer readable medium having computer-executable instructions for performing a method for determining an estimated battery cell module state indicative of a state of a battery cell module of a battery pack in accordance with another exemplary embodiment is provided. The method includes determining the estimated battery cell module state of the battery cell module at a predetermined time based on an estimated battery pack state and at least one of a battery cell module voltage, a battery cell module current, and a battery cell module temperature. The method further includes storing a vector corresponding to the estimated battery cell module state in a memory.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a schematic of a system for determining an estimated battery cell module state in accordance with an exemplary embodiment;

FIG. 2 is a block diagram of a battery pack computational algorithm utilized by the system of FIG. 1; and

FIG. 3 is a block diagram of a battery cell module computational algorithm utilized by the system of FIG. 1.

DETAILED DESCRIPTION OF THE INVENTION

The state of an electrochemical cell, referred to herein as a battery cell, used in a battery pack is defined as a set of values that may be used along with a mathematical description (called a “battery cell model”) of battery cell electrochemical properties to predict its input-output characteristics at some point of time. For example, given a battery state and a battery cell current, one could predict a battery cell voltage. Alternately, given a battery state and a battery cell voltage, one could predict a battery cell current.

Battery cell modules are built by electrically connecting together one or more battery cells. A wide variety of configurations are possible, but those that are most commonly used connect battery cells either in parallel, in series, or both. For simplicity of discussion, it will be assumed that battery cells are connected together in series, although those skilled in the art will recognize that the methodologies described herein are applicable for any battery cell module configuration. For a predetermined battery cell module configuration, a mathematical model of battery cell module input-output characteristics may be generated using a predetermined battery cell model.

Battery packs are built by electrically connecting together one or more battery cell modules. A wide variety of configurations are possible, but those that are most commonly used connect battery cell modules either in parallel, in series, or both. For simplicity of discussion, it will be assumed that battery cell modules are connected together in series, although those skilled in the art will recognize that the methodologies described herein are applicable for any battery pack configuration. For a predetermined battery pack configuration, a mathematical model of battery pack input-output characteristics may be generated using the predetermined cell model or battery cell module model.

For example, battery packs have electrical characteristics that are directly related to the battery cell characteristics. In series-connected battery packs, the overall battery-pack voltage is the sum of the individual battery cell voltages, and the battery pack current is equal to the individual battery cell currents. Therefore, it is reasonable to define a battery-pack state in a similar way to a battery cell state, and example values indicative of the state of a battery pack also include (but are not limited to): state-of-charge, polarization voltages, hysteresis voltages, battery pack resistance, battery pack total capacity, polarization time constants, hysteresis levels, and an efficiency factor. If these values are properly normalized, a battery pack state can be thought of as the average of all the corresponding cell states.

The system, method, and article of manufacture disclosed herein may be used to determine estimates of values indicative of states of a plurality of battery cell modules in a battery pack in an efficient manner. A single battery pack computational algorithm (BPCA) is employed to determine the state of the overall battery pack. Further, for each of a plurality of battery cell modules in the battery pack, a single battery cell module computational algorithm (BCMCA) is utilized to determine a state of each battery cell module. The BCMCAs can be made computationally much simpler than the BPCA, and do not need to operate as frequently, resulting in reduced overall computational tasks. If a battery pack comprises N battery cell modules, computation slightly higher than 1/N times the computational tasks required by other methods is possible.

Referring to FIG. 1, a system 10 for determining an estimated battery cell module state indicative of a state of a battery cell module 14 in accordance with an exemplary embodiment is illustrated. The battery pack 12 includes at least one battery cell module 14. The battery cell module 14 can include one or more battery cells. The system 10 includes a voltage sensor 20, a temperature sensor 21, a voltage sensor 22, a temperature sensor 23, a current sensor 24, a load circuit 26, and a computer 28.

The voltage sensor 20 is provided to generate a first output signal indicative of the voltage produced by the battery pack 12. The voltage sensor 20 is electrically coupled between the I/O interface 46 of the computer 28 and the battery pack 12. The voltage sensor 20 sends the first output signal to the computer 28.

The temperature sensor 22 is provided to generate a second output signal indicative of a temperature of the battery pack 12. The temperature sensor 22 is disposed proximate the battery pack 12 and is electrically coupled to the I/O interface 46 of the computer 28. The temperature sensor 22 sends the second output signal to the computer 28.

The voltage sensor 22 is provided to generate a third output signal indicative of a voltage produced by the battery cell module 14. The voltage sensor 22 is electrically coupled between the I/O interface 46 of the computer 28 and the battery cell module 14. The voltage sensor 22 sends the third output signal to the computer 28.

The temperature sensor 23 is provided to generate a fourth output signal indicative of a temperature of the battery cell module 14. The temperature sensor 23 is disposed proximate the battery cell module 14 and is electrically coupled to the I/O interface 46 of the computer 28. The temperature sensor 23 sends the fourth output signal to the computer 28.

The current sensor 24 is provided to generate a fifth output signal indicative of a current sourced or sunk by the battery cell module 14 and of the battery pack 12. The current sensor 24 is electrically coupled between the battery pack 12 and the load circuit 26. The current sensor 24 is further electrically coupled to the I/O interface 46 of the computer 28. The current sensor 24 sends the third output signal to the computer 28.

The load circuit 26 is electrically coupled to the current sensor 24 and sinks or sources a current from the battery pack 12. The load circuit 26 comprises any electrical device that can be electrically coupled to the battery pack 12.

The computer 28 is provided for determining an estimated battery cell module state indicative of a state of the battery cell module 14 of the battery pack 12, as will be explained in greater detail below. The computer 28 includes a central processing unit (CPU) 40, a read-only memory (ROM) 44, a volatile memory such as a random access memory (RAM) 45 and an input/output (I/O) interface 46. The CPU 40 operably communicates with the ROM 44, the RAM 45, and the I/O interface 46. The CPU 40 includes a clock 42. The computer readable media including ROM 44 and RAM 46 may be implemented using any of a number of memory devices such as PROMs, EPROMs, EEPROMS, flash memory or any other electric, magnetic, optical or combination memory device capable of storing data, some of which represent executable instructions used by the CPU 40.

Referring to FIG. 2, a general overview of a BPCA 60 will be provided. In particular, the BPCA 60 is utilized by the computer 28 for determining the estimated battery cell module state of the battery cell module 14. The BPCA 60 outputs an estimated battery pack state, using a measured battery pack voltage, a battery pack current, and a battery pack temperature.

The system 10 utilizes one BPCA 60 to estimate as accurately as desired the overall battery pack state, comprising for example battery pack state-of-charge, polarization voltages, hysteresis voltages, battery pack resistance, battery pack total capacity, polarization time constants, hysteresis levels, and an efficiency factor. It further incorporates a plurality of BCMCAs: one BCMCA per battery cell module for which a battery cell module state estimate is desired. The input to each BCMCA is the estimated battery pack state produced by the BPCA 60, as well as at least one of a battery cell module voltage, a battery cell module current, and a battery cell module temperature. The output from each BCMCA is an estimate of a desired value indicative of battery cell module state.

In an exemplary embodiment, the BPCA 60 estimates the following quantities indicative of the state of the battery pack 12: (i) an average battery pack state-of-charge, (ii) an average battery pack cell resistance, and (iii) an average battery pack cell inverse total capacity. In an alternative embodiment, the BPCA 60 can additionally estimate the following quantities indicative of the state of the battery pack 12: (i) two average battery pack polarization voltages, (ii) an average battery pack polarization-voltage time constant, and (iii) an average battery pack polarization voltage mixing constant, (iv) an average battery pack hysteresis voltage, and (v) a current sensor bias value.

In the exemplary embodiment, the BPCA 60 utilizes a linear Kalman filter or a nonlinear Kalman filter to estimate these quantities. An example of an extended Kalman filter that can be utilized herein, is described in U.S. Pat. No. 6,534,954, which is incorporated by reference herein in its entirety. In order to design a Kalman filter to estimate these quantities, a mathematical model of their dynamics is utilized, which is written in a “state space” form. One vector equation (i.e., state equation) is utilized to describe how the state is affected by the input, and a second equation (i.e., output equation) is utilized to describe how the output is computed from the state. In the exemplary embodiment, the inputs include a battery pack current and a battery pack temperature, for example. Outputs include a battery pack voltage, for example.

The vector state equation for the BPCA 60 is determined by combining equations for each of the individual states. The battery pack average SOC is derived as follows. First the SOC dynamics for a given cell (i) is described utilizing the following equation (1):

$\begin{matrix} {{z_{k}^{(i)} = {{z_{k - 1}^{(i)} - {\left( {i_{k} - i_{k}^{b}} \right)\Delta \; t\frac{1}{C_{k}^{(i)}}}} = {z_{k - 1}^{(i)} - {\left( {i_{k} - i_{k}^{b}} \right)\Delta \; {tC}_{{inv},k}^{(i)}}}}},} & (1) \end{matrix}$

where z_(k) ^((i)) denotes the SOC of cell i at time index k, i_(k) denotes the measurement of battery-pack current at time index k, i_(k) ^(b) denotes the bias in the battery-pack current sensor, Δt denotes the sampling period, and C_(inv,k) ^((i)) denotes the inverse of cell total capacity for cell i: C_(inv,k) ^((i))=1/C_(k) ^((i)).

To determine the battery pack average SOC dynamics, the N copies of equation (1) are added together—one for each cell—and then divided by N to obtain the following equation (2):

$\begin{matrix} {{\frac{1}{N}{\sum\limits_{i = 1}^{N}z_{k}^{(i)}}} = {{\frac{1}{N}{\sum\limits_{i = 1}^{N}z_{k - 1}^{(i)}}} - {\left( {i_{k} - i_{k}^{b}} \right)\Delta \; t\frac{1}{N}{\sum\limits_{i = 1}^{N}{C_{{inv},k}^{(i)}.}}}}} & (2) \end{matrix}$

The equation (2) can be expressed as equation (3):

z _(k) = z _(k−1)−(i _(k) −i _(k) ^(b))Δt C _(inv,k),  (3)

where z _(k) is the battery pack average SOC at time index k, and C _(inv,k) denotes the battery pack average cell inverse capacity.

Similarly, the battery pack average polarization voltage dynamics is defined utilizing the following equation:

ƒ _(k) =A _(ƒ) ƒ _(k−1) +B _(ƒ)(i _(k) −i _(k) ^(b)),

where ƒ _(k) are the average polarization voltages at time index k, A_(ƒ) is a constant matrix containing polarization time constants α_(k), and B_(ƒ) is a constant predetermined input matrix.

The battery pack average hysteresis dynamics is defined utilizing the following equation:

h _(k)=exp(−|(i _(k) −i _(k) ^(b))γΔt C _(inv,k)|) h _(k−1)+(1−exp(−|(i _(k) −i _(k) ^(b))γΔt C _(inv,k)|))sgn(i _(k) −i _(k) ^(b)),

where h _(k) is the relative hysteresis level at time index k, and γ is a hysteresis rate constant.

The remaining values indicative of the state of the battery pack 40 are relatively slowly changing, and are modeled as constants which can be modified by a noise process:

α_(k)=α_(k−1) +n _(k) ^(α)

R _(k) = R _(k−1) +n _(k) ^(R)

C _(inv,k) = C _(inv,k−1) +n _(k) ^(C) ^(inv)

G _(k) =G _(k−1) +n _(k) ^(G)

i _(k) ^(b) =i _(k−1) ^(b) +n _(k) ^(i) ^(b)

where α_(k) is a polarization time constant, C _(inv,k) is the battery pack average cell inverse capacity, R _(k) is the battery pack average cell resistance, and G_(k) is a polarization-voltage blending constant, and the variables denoted as n_(k) with some superscript denote the modeled noises.

The foregoing state equations may be combined to make a single vector state equation (4) for the BPCA 60:

z _(k) = z _(k−1)−(i _(k) −i _(k) ^(b))Δt C _(inv,k)

ƒ _(k) =A _(ƒ) ƒ _(k−1) +B _(ƒ)(i _(k) −i _(k) ^(b)),

h _(k)=exp(−|(i _(k) −i _(k) ^(b))γΔt C _(inv,k)|) h _(k−1)+(1−exp(−|(i _(k) −i _(k) ^(b))γΔt C _(inv,k)|))sgn(i _(k) −i _(k) ^(b)),

α_(k)=α_(k−1) +n _(k) ^(α)

R _(k) = R _(k−1) +n _(k) ^(R)

C _(inv,k) = C _(inv,k−1) +n _(k) ^(C) ^(inv)

G _(k) =G _(k−1) +n _(k) ^(G)

i _(k) ^(b) =i _(k−1) ^(b) +n _(k) ^(i) ^(b)   (4)

or, x_(k)=ƒ(x_(k−1),u_(k−1),w_(k−1)) where x_(k)=[ z _(k), ƒ _(k) ^(T), h _(k),α_(k) ^(T), R _(k) ^(T), C _(inv,k), G _(k) ^(T),ī_(k) ^(b)]^(T), u_(k−1)=i_(k−1), w_(k−1) is a random vector defining the noise processes, and ƒ( ) is a vector function comprising all of the individual elements in equation (4).

The output equation for the BPCA 60 is defined utilizing the following equation (5):

y _(k)=OCV( z _(k))+G _(k) ƒ _(k) − R _(k)(i _(k) −i _(k) ^(b))+M h _(k) +v _(k),  (5)

where y _(k) is the battery pack voltage, OCV( ) is the cell's open-circuit-voltage as a function of SOC, M is the maximum hysteresis level, and v_(k) represents voltage-sensor measurement noise. The equation (5) can be represented in the more general form y_(k)=h(x_(k),u_(k),v_(k)) where, in this representation y_(k)= y _(k) is the output of the cell, x_(k) is the state of the cell (as defined above), u_(k)=i_(k), and v_(k) is a random vector defining the noise.

Those skilled in the art of Kalman filter design can utilize equation (4) and equation (5) to develop the BPCA 60 that continuously outputs a battery state estimate for use by the BCMCA 70. The exemplary embodiment for the BPCA 60 is a sigma-point Kalman filter, listed in Table 1, with parameters γ=√{square root over (1)}, α₀ ^((m))=α₀ ^((c))=1−L/3 and α_(k) ^((m))=α_(k) ^((c))=⅙, where L is the length of x_(k) ^(a). Further, in alternative embodiments, these equations can be modified to account for other input variables, such as battery pack temperature. Further, in an alternative embodiment, another form of BPCA could be utilized instead of a Kalman filter.

An overview of the method for estimating a battery cell module state will now be described. Initially, the system 10 measures a battery cell module voltage, a battery cell module current, and a battery cell module temperature. The computer 28 determines the estimated battery cell module state of the battery cell module at a predetermined time based on an estimated battery pack state and at least one of the battery cell module voltage, the battery cell module current, and the battery cell module temperature. Further, the computer 28 stores a vector corresponding to the estimated battery cell module state in the memory 45.

Referring to FIG. 3, a general overview of the battery cell module computational algorithm (BCMCA) 70 will be provided. The method described herein utilizes one BPCA 60 and a plurality of BCMCA 70 to produce desired estimates of battery cell module states. The inventor herein has recognized that it is not necessary to estimate all of the possible values indicative of a state of a battery cell module for all battery cell modules in the battery pack 12. For example, it may be desirable to only estimate the state-of-charge of some of the battery cell modules, or the resistance value of some of the battery cell modules, or the capacity value of some of the battery cell modules. Further, the BCMCA 70 is defined in a way that the quantities that it estimates directly change relatively slowly and so the BCMCA 70 does not need to be executed as frequently as the BPCA 60 in order to maintain accurate estimates.

In an exemplary embodiment, the BCMCA 70 receives as an input an estimated battery pack state, a battery cell module voltage, a battery cell module current, and a battery cell module temperature. The BCMCA 70 produces as an output an estimate of battery cell module SOC, battery cell module resistance, and battery cell module capacity.

The BCMCA 70 uses a two-step process to compute an estimated battery cell module state. It first estimates a difference between the battery pack state and the cell module state. Secondly, it adds the estimated battery pack state to this difference to compute an estimated battery cell module state. The quantities estimated in the first step (the difference between the battery pack state and the cell module state) change relatively slowly in a battery pack. Therefore, the BCMCA 70 does not need to be executed as frequently as a BPCA 60 and therefore requires fewer computations.

In an exemplary embodiment, the first step performed by the BCMCA 70 estimates a difference between a SOC of a battery cell module and the average battery pack SOC, the difference between the inverse total capacity of the battery cell module and the battery pack inverse total capacity, and the difference between the resistance of the battery cell module and the average battery pack resistance. Then, the BCMCA 70 computes the estimated battery cell module state by adding these difference values to the estimated battery pack state. That is, it computes the estimated battery cell module SOC by adding the battery pack average SOC to the estimate of the difference between the battery pack average SOC and the battery cell module SOC. It computes the estimated battery cell module resistance by adding the battery pack average resistance to the estimate of the difference between the battery pack average resistance and the battery cell module resistance. It computes the estimated battery cell module capacity inverse by adding the battery pack average capacity inverse to the estimate of the difference between the battery pack capacity inverse and the battery cell module capacity inverse: it then computes the estimated battery cell module capacity as one divided by the estimated battery cell module capacity inverse.

In an exemplary embodiment, each BCMCA 70 utilizes a linear Kalman filter or a nonlinear Kalman filter for each quantity that will be estimated. Therefore, a state equation and an output equation for each quantity that will be estimated is initially determined. The state equation and the output equation for the BCMCA 70 will be described in subsections, below. It should be noted that the term “Delta” is used to indicate the difference between a battery cell module state value and a corresponding average battery pack state value. For example, “Delta-SOC” indicates a difference between a battery cell module SOC state and a battery-pack SOC state. In the notation that follows, the Greek letter Delta (Δ) is used to indicate a Delta quantity. Further, the notation uses a bar ( ) over a quantity to indicate that it corresponds to an average battery pack quantity. For example, z indicates average battery pack SOC.)

In an exemplary embodiment, each BCMCA 70 will estimate battery cell module SOC, battery cell module resistance, and battery cell-module capacity. Therefore, state equations and output equations are utilized for these three quantities in order to design a Kalman filter to estimate the quantities. Exemplary equations for these three quantities are described in the following paragraphs.

In order to estimate battery cell module SOC, we first define a difference between the SOC of battery cell module 40 and the average battery pack SOC as equation (6):

Δz _(k) ^((i)) =z _(k) ^((i)) − z _(k),  (6)

where Δz_(k) ^((i)) is the difference between the SOC for battery cell module i and the average battery pack SOC. Then, equation (3) may be subtracted from equation (1), using the definition of equation (4) to determine the equation (7) describing the dynamics of Δz_(k) ^((i)):

$\begin{matrix} \begin{matrix} {{\Delta \; z_{k}^{(i)}} = {z_{k - 1}^{(i)} - {i_{k}\Delta \; {tC}_{{inv},k}^{(i)}} - {\overset{\_}{z}}_{k - 1} + {i_{k}\Delta \; t{\overset{\_}{C}}_{{inv},k}}}} \\ {= {{\Delta \; z_{k - 1}^{(i)}} - {i_{k}\Delta \; t\; \Delta \; C_{{inv},k}^{(i)}}}} \end{matrix} & (7) \end{matrix}$

where ΔC_(inv,k) ^((i))=C_(inv,k) ^((i))− C _(inv,k). Because ΔC_(inv,k) ^((i)) tends to be small, the state Δz_(k) ^((i)) does not change very quickly, and can be updated at a slower rate than the battery pack average SOC, saving computation.

An output equation (8) that can be used with the Delta-SOC computation is:

y_(k) ^((i))=OCV( z _(k) +Δz _(k) ^((i)))+G _(k) ƒ _(k)−( R _(k) +ΔR _(k) ^((i)))(i _(k) −i _(k) ^(b))+M h _(k) +e _(k).  (8)

To estimate Δz_(k) ^((i)), a linear or nonlinear Kalman filter may be used with equation (7) as the state equation, and equation (8) as the output equation. Since BCMCA 70 utilizes a single-state Kalman filter, it performs the foregoing computations relatively quickly. The exemplary embodiment for the BCMCA 70 is a sigma-point Kalman filter, listed in Table 1, where the state of the filter is x_(k)=Δz_(k) ^((i)) and the output of the filter is y_(k)=y_(k) ^((i)), γ=√{square root over (3)}, α₀ ^((m))=α₀ ^((c))=⅔ and α_(k) ^((c))=⅙, where L is the length of x_(k).

In order to estimate a battery cell module resistance, we first define a difference between the resistance of cell module 40 and the average battery pack resistance as ΔR_(k) ^((i))=R_(k) ^((i))− R _(k). We then define a model of cell resistance utilizing the following two coupled equations:

ΔR_(k+1) ^((i)) =ΔR _(k) ^((i)) +r _(k)

y _(k)=OCV( z _(k) +Δz _(k) ^((i)))−( R _(k) +ΔR _(k) ^((i)))i _(k) +e _(k)

where ΔR_(k) ^((i)) is the difference between battery pack average resistance and battery cell module resistance and is modeled as a constant value with a noise process r_(k) allowing adaptation, y_(k) is a crude estimate of the battery cell module's voltage, i_(k) is the battery cell module current, and e_(k) models estimation error. In a Delta-R KF, the model's prediction of y_(k) and the measured value of y_(k) are utilized by the KF to adapt ΔR_(k) ^((i)). It should be noted that in an alternative embodiment, different values of resistance and for charge and discharge may be easily incorporated, and more precise output equations such as equation (8) can be used. The exemplary embodiment for this aspect of the BCMCA is an extended Kalman filter, listed in Table 2, where the state of the filter is x_(k)=ΔR_(k) ^((i)) and the output of the filter is y_(k) as given above.

In order to estimate a battery cell module capacity, we first define a difference between the capacity inverse of cell module 40 and the average battery pack capacity inverse as ΔC_(inv,k) ^((i))=C_(inv,k) ^((i))− C _(inv,k) We then define a model of cell capacity inverse utilizing the following two coupled equations:

ΔC _(inv,k+1) ^((i)) =ΔC _(inv,k) ^((i)) +r _(k)

d _(k) =Z _(k) ^((i)) −z _(k−1) ^((i))+η_(i) i _(k−1) Δt( C _(inv,k−1) +ΔC _(inv,k−1) ^((i)))+e _(k)

The second of these two equations is a reformulation of the SOC state equation such that the expected value of d_(k) is equal to zero by construction. Again, a Kalman Filter is constructed using the model defined by these two equations to produce a capacity estimate. As the Kalman Filter operates, the computation for d_(k) in the second equation is utilized by the KF to update the capacity inverse estimate. The exemplary embodiment for this aspect of the BCMCA is an extended Kalman filter, listed in Table 2, where the state of the filter is x_(k)=ΔC_(inv,k) ^((i)) and the output of the filter is y_(k)=d_(k) as given above.

The output of a BCMCA is computed by combining the average battery pack state with the battery cell module Delta states produced by the individual Kalman filters operating within the BCMCA:

$z_{k}^{(i)} = {{\overset{\_}{z}}_{k} + {\Delta \; z_{k}^{(i)}}}$ $R_{k}^{(i)} = {{\overset{\_}{R}}_{k} + {\Delta \; R_{k}^{(i)}}}$ $C_{k}^{(i)} = \frac{1}{{\overset{\_}{C}}_{{inv},k} + {\Delta \; C_{{inv},k}^{(i)}}}$

It should be noted that one desirable feature of the BCMCA has been defined by the foregoing equations. Although the battery pack state may change rapidly, the difference between any battery cell module state and the battery pack average state changes very slowly. With this understanding, it is apparent that the BPCA needs to be executed frequently, but the BCMCA internal filters need be executed much less frequently. To illustrate, if a pack comprises N battery cell modules in series, other techniques to estimate battery pack state require ongoing computation proportional to N every time step. The system 10 disclosed herein, however, only utilizes a single BPCA and N BCMCAs which are both computationally much simpler than the BPCA and also need to execute less frequently than the BPCA. Therefore, the computational tasks implemented by the system 10 can approach 1/N times the computational tasks utilized by other methods and still produce accurate estimates of the desired battery cell module states.

The system, the method, and the article of manufacture for determining an estimated battery cell module state provide a substantial advantage over other systems and methods. In particular, the system, method, and article of manufacture provide a technical effect of accurately determining an estimated battery cell module state.

The above-described methods can be embodied in the form of computer program code containing instructions embodied in tangible media, such as floppy diskettes, CD ROMs, hard drives, or any other computer-readable storage medium, wherein, when the computer program code is loaded into and executed by a computer, the computer becomes an apparatus for practicing the invention. The above-described methods can also be embodied in the form of computer program code, for example, whether stored in a storage medium, loaded into and/or executed by a computer, or transmitted over some transmission medium, loaded into and/or executed by a computer, or transmitted over some transmission medium, such as over electrical wiring or cabling, through fiber optics, or via electromagnetic radiation, wherein, when the computer program code is loaded into an executed by a computer, the computer becomes an apparatus for practicing the methods. When implemented on a general-purpose microprocessor, the computer program code segments configure the microprocessor to create specific logic circuits.

While the invention is described with reference to the exemplary embodiments, it will be understood by those skilled in the art that various changes may be made and equivalent elements may be substituted for elements thereof without departing from the scope of the invention. In addition, many modifications may be made to the teachings of the invention to adapt to a particular situation without departing from the scope thereof. Therefore, it is intended that the invention not be limited the embodiments disclosed herein, but that the invention includes all embodiments falling with the scope of the appended claims. Moreover, the use of the terms first, second, etc. does not denote any order of importance, but rather the terms first, second, etc. are used to distinguish one element from another.

TABLE I NONLINEAR SIGMA-POINT KALMAN FILTER. State-space model:     x_(k) = f(x_(k−1), u_(k−1), w_(k−1))     y_(k) = h(x_(k), u_(k), v_(k)), where x_(k) is a state equation and y_(k) is an output equation, w_(k) and v_(k) are independent, zero-mean, Gaussian noise processes of covariance matrices Σ_(w) and Σ_(v), respectively. Definitions: x_(k)^(a) = [x_(k)^(T), w_(k)^(T), v_(k)^(T)]^(T), X_(k)^(a) = [(X_(k)^(x))^(T), (X_(k)^(w))^(T), (X_(k)^(v))^(T)]^(T), p = 2 × dim (x_(k)^(a)). Initialization: For k = 0, set $\begin{matrix} {{\hat{x}}_{0}^{+}\; = {E\left\lbrack x_{0} \right\rbrack}} \\ {\Sigma_{\overset{\sim}{x},0}^{+} = {E\left\lbrack {\left( {x_{0}\; - {\hat{x}}_{0}^{+}} \right)\; \left( {x_{0} - {\hat{x}}_{0}^{+}} \right)^{T}} \right\rbrack}} \end{matrix}$ $\begin{matrix} {{\hat{x}}_{0}^{a, +} = {E\left\lbrack x_{0}^{a} \right\rbrack}} \\ \begin{matrix} {\Sigma_{\overset{\sim}{x},0}^{a, +} = {E\left\lbrack {\left( {x_{0}^{a} - {0{\hat{x}}_{0}^{a, +}}} \right)\left( {x_{0}^{a} - {\hat{x}}_{0}^{a, +}} \right)^{T}} \right\rbrack}} \\ {= {{diag}\; {\left( {\Sigma_{\overset{\sim}{x},0}^{+},\Sigma_{w},\Sigma_{v}} \right).}}} \end{matrix} \end{matrix}$ Computation: For k = 1, 2, . . . , compute: State estimate time update: $X_{k - 1}^{a, +} = \left\{ {{\hat{x}}_{k - 1}^{a, +},{{\hat{x}}_{k - 1}^{a, +} + {\gamma \sqrt{\Sigma_{\overset{\sim}{x},{k - 1}}^{a, +}}}},{{\hat{x}}_{k - 1}^{a, +} - {\gamma \sqrt{\Sigma_{\overset{\sim}{x},{k - 1}}^{a, +}}}}} \right\}$ X_(k, i)^(x, −) = f(X_(k − 1, i)^(x, +), u_(k − 1), X_(k − 1, i)^(w, +)). x̂_(k)⁻ = Σ_(i = 0)^(p)α_(i)^((m))X_(k, i)^(x, −). Error covariance time update: $\Sigma_{\overset{\sim}{x},k}^{-} = {\Sigma_{i = 0}^{p}{\alpha_{i}^{(c)}\left( {X_{k,i}^{x, -} - {\hat{x}}_{k}^{-}} \right)}{\left( {X_{k,i}^{x, -} - {\hat{x}}_{k}^{-}} \right)^{T}.}}$ Output estimate: Y_(k, i) = h(X_(k, i)^(x, −), u_(k), X_(k − 1, i)^(v, +)).ŷ_(k) = Σ_(i = 0)^(p)α_(i)^((m))Y_(k, i). Estimator gain matrix $\Sigma_{\overset{\sim}{y},k} = {{\Sigma_{i = 0}^{p}{\alpha_{i}^{(c)}\left( {Y_{k,i} - {\hat{y}}_{k}} \right)}{\left( {Y_{k,i} - {\hat{y}}_{k}} \right)^{T}.\Sigma_{\overset{\sim}{y},\overset{\sim}{y},k}^{-}}} = {{\Sigma_{i = 0}^{p}{\alpha_{i}^{(c)}\left( {X_{k,i}^{x, -} - {\hat{x}}_{k}^{-}} \right)}{\left( {Y_{k,i} - {\hat{y}}_{k}} \right)^{T}.L_{k}}} = {\sum\limits_{{\hat{x}\hat{y}},k}{\Sigma_{\overset{\sim}{y},k}^{- 1}.}}}}$ State estimate measurement update: x̂_(k)⁺ = x̂_(k)⁻ + L_(k)[y_(k) − ŷ_(k)]. Error covariance meas. update: $\Sigma_{\overset{\sim}{x},k}^{+} = {\sum\limits_{\overset{\sim}{x},k}{{- L_{k}}\Sigma_{\overset{\sim}{y},k}{L_{k}^{T}.}}}$

-   In Table I, the following variables, symbols, and notation are used     (in addition to those defined elsewhere):     -   Superscript “+”: Indicative of an estimated quantity at time         index k, using all measured data available at or before time         index k.     -   Superscript “−”: Indicative of a predicted quantity at time         index k, using all measured data available at or before time         index k−1.     -   Superscript “a”: Indicative of an augmented state of the dynamic         system at time index k, where the augmented state comprises         system state x_(k), state noise w_(k), and sensor noise v_(k).     -   Subscript “i” on a sigma-point set: Indicative of the ith member         of that set.     -   X_(k) ^(a): Set of sigma points of augmented state at time index         k, capturing mean and covariance of augmented state.     -   X_(k) ^(x): Set of sigma points of state at time index k,         capturing mean and covariance of state.     -   X_(k) ^(w): Set of sigma points of process noise at time index         k, capturing mean and covariance of process noise.     -   X_(k) ^(v): Set of sigma points of sensor noise at time index k,         capturing mean and covariance of sensor noise.

Y_(k): Set of sigma points of predicted output value at time index k, capturing mean and covariance of predicted output, used internally by algorithm.

E[ ]: Function returning statistical expected value of its argument.

√{square root over ( )}: Matrix square root, computed using a Cholesky decomposition.

-   -   {circumflex over (x)}_(k) ⁺: State estimate at time index k: an         output of the algorithm (e.g., vector of estimated battery cell         module state).     -   {circumflex over (x)}_(k) ^(a,+): Estimate of augmented state at         time index k.     -   Σ_({tilde over (x)},k) ⁺: Error covariance of state estimate at         time index k.     -   Σ_({tilde over (x)},k) ^(a,+): Error covariance of augmented         state estimate at time index k.     -   {circumflex over (x)}_(k) ⁻: A-priori predicted value of state         at time index k.     -   Σ_({tilde over (x)},k) ⁻: Error covariance of state prediction         at time index k.     -   ŷ_(k): Predicted value of output at time index k.     -   y_(k): Measured value of output at time index k.     -   Σ_({tilde over (y)},k): Error covariance of output prediction at         time index k.     -   Σ{tilde over (x)}{tilde over (y)},k: Error cross-covariance         between state and output prediction at time index k.     -   L_(k): Estimator gain matrix at time index k.     -   γ: Algorithm parameter (set to in exemplary embodiment).     -   α_(i) ^((m)): Set of weighting factors used when computing mean         state and mean output estimates and predictions.     -   α_(i) ^((c)): Set of weighting factors used when computing the         error covariance of state and output estimates and predictions.

-   In Table II, the following variables, symbols, and notation are used     (in addition to those

TABLE II NONLINEAR EXTENDED KALMAN FILTER. State-space model:     x_(k) = f(x_(k−1), u_(k−1), w_(k−1))     y_(k) = h(x_(k), u_(k), v_(k)), where x_(k) is a state equation and y_(k) is an output equation, w_(k) and v_(k) are independent Gaussian noise processes with means w _(k) and v _(k), respectively, and covariance matrices Σ_(w) and Σ_(v), respectively. Definitions: $\begin{matrix} {{\hat{A}}_{k} = {\frac{\partial{f\left( {x_{k},u_{k},w_{k},k} \right)}}{\partial x_{k}}_{x_{k} = {\hat{x}}_{k}^{-}}}} & {{\hat{B}}_{k} = {\frac{\partial{f\left( {x_{k},u_{k},w_{k},k} \right)}}{\partial w_{k}}_{w_{k} = {\overset{\_}{w}}_{k}}}} \\ {{\hat{C}}_{k} = {\frac{\partial{h\left( {x_{k},u_{k},v_{k},k} \right)}}{\partial x_{k}}_{x_{k} = {\hat{x}}_{k}^{-}}}} & {{\hat{D}}_{k} = {\frac{\partial{h\left( {x_{k},u_{k},v_{k},k} \right)}}{\partial v_{k}}_{v_{k} = {\overset{\_}{v}}_{k}}}} \end{matrix}$ Initialization: For k = 0, set x̂₀⁺ = E[x₀] $\Sigma_{\overset{\sim}{x},0}^{+} = {{E\left\lbrack {\left( {x_{0} - {\hat{x}}_{0}^{+}} \right)\left( {x_{0} - {\hat{x}}_{0}^{+}} \right)^{T}} \right\rbrack}.}$ Computation: For k = 1, 2, . . . , compute: State estimate time update: ${\hat{x}}_{k}^{-} = {{f\left( {{\hat{x}}_{k - 1}^{+},u_{k - 1},{\overset{\_}{w}}_{k - 1}} \right)}.}$ Error covariance time update: ${\Sigma_{\overset{\sim}{x},k}^{-}{\hat{A}}_{k - 1}\Sigma_{\overset{\sim}{x},{k - 1}}^{+}{\hat{A}}_{k - 1}^{T}} + {{\hat{B}}_{k - 1}\Sigma_{w}{{\hat{B}}_{k - 1}^{T}.}}$ Output estimate: ${\hat{y}}_{k} = {{h\left( {{\hat{x}}_{k}^{-},u_{k},{\overset{\_}{v}}_{k}} \right)}.}$ Estimator gain matrix $L_{k} = {\sum\limits_{\overset{\sim}{x},k}{{{\hat{C}}_{k}^{T}\left( {{{\hat{C}}_{k}\Sigma_{\overset{\sim}{x},k}^{-}{\hat{C}}_{k}^{T}} + {{\hat{D}}_{k}\Sigma_{v}{\hat{D}}_{k}^{T}}} \right\rbrack}^{- 1}.}}$ State estimate measurement update: x̂_(k)⁺ = x̂_(k)⁻ + L_(k)[y_(k) − ŷ_(k)]. Error covariance measurement update: $\Sigma_{\overset{\sim}{x},k}^{+} = {\left( {I - {L_{k}{\hat{C}}_{k}}} \right){\Sigma_{\overset{\sim}{x},k}^{-}.}}$ defined elsewhere):

-   -   Superscript “+”: Indicative of an estimated quantity at time         index k, using all measured data available at or before time         index k.     -   Superscript “−”: Indicative of a predicted quantity at time         index k, using all measured data available at or before time         index k−1.     -   Â_(k),{circumflex over (B)}_(k),Ĉ_(k),{circumflex over (D)}_(k):         Matrices indicative of a linearization of the functions ƒ( ) and         h( ) at time index k.     -   E[ ]: Function returning statistical expected value of its         argument.     -   {circumflex over (x)}_(k) ⁺: State estimate at time index k: an         output of the algorithm (e.g., vector of estimated battery cell         module state).     -   Σ_({tilde over (x)},k) ⁺: Error covariance of state estimate at         time index k: an output of the algorithm.     -   {circumflex over (x)}_(k) ⁻: A-priori predicted value of state         at time index k.     -   Σ_({tilde over (x)},k) ⁻: Error covariance of state prediction         at time index k.     -   ŷ_(k): Predicted value of output at time index k.     -   L_(k): Estimator gain matrix at time index k. 

1. A system for determining an estimated battery cell module state indicative of a state of a battery cell module of a battery pack, comprising: a voltage sensor electrically coupled to the battery cell module, the voltage sensor configured to generate a first signal indicative of a battery cell module voltage; a current sensor electrically coupled to the battery cell module, the current sensor configured to generate a second signal indicative of a battery cell module current; a temperature sensor disposed proximate the battery cell module, the temperature sensor configured to generate a third signal indicative of battery cell module temperature; and a computer configured to receive the first, second, and third signals, the computer is further configured to determine the estimated battery cell module state at the predetermined time based on an estimated battery pack state and at least one of the first, second, and third signals, the computer further configured to store a vector corresponding to the estimated battery cell module state in a memory.
 2. The system of claim 1, wherein the computer is further configured to determine a difference between the estimated battery cell module state and the estimated battery pack state, the computer further configured to determine the estimated battery cell module state by adding the estimated battery pack state to the difference between the battery cell module state and the estimated battery pack state.
 3. The system of claim 2, wherein the computer is configured to determine the difference between the estimated battery cell module state and the estimated battery pack state using one of a linear Kalman filter and a nonlinear Kalman filter.
 4. The system of claim 2, wherein the computer is configured to determine the difference between the battery cell module state and the estimated battery pack state less frequently than determining the estimated battery pack state.
 5. The system of claim 2, wherein the computer is configured to determine the estimated battery pack state using one of a linear Kalman filter and a nonlinear Kalman filter.
 6. The system of claim 2, where the battery cell module comprises a single electrochemical cell.
 7. The system of claim 2, wherein the battery cell module comprises a plurality of electrochemical cells.
 8. A computer readable medium having computer-executable instructions for performing a method for determining an estimated battery cell module state indicative of a state of a battery cell module of a battery pack, the method comprising: determining the estimated battery cell module state of the battery cell module at a predetermined time based on an estimated battery pack state and at least one of a battery cell module voltage, a battery cell module current, and a battery cell module temperature; and storing a vector corresponding to the estimated battery cell module state in a memory. 